Aller au contenu principal

HTTPS et TLS 1.3

Sécuriser les communications sur Internet

Notions théoriques

Pourquoi HTTPS est-il essentiel ?

Lorsqu’un utilisateur navigue sur un site Web, les données échangées entre son navigateur et le serveur peuvent être interceptées. En utilisant un protocole sécurisé comme HTTPS, ces échanges sont chiffrés, garantissant :

  • La confidentialité : Empêcher un attaquant d’écouter les communications.
  • L’intégrité : Assurer que les données ne sont pas modifiées en transit.
  • L’authenticité : Vérifier que le site visité est bien celui qu’il prétend être.

Différence entre HTTP et HTTPS

  • HTTP (HyperText Transfer Protocol) : Protocole non sécurisé, les données circulent en clair.
  • HTTPS (HTTP Secure) : Version sécurisée d’HTTP qui utilise TLS pour chiffrer les communications.

Le rôle de TLS 1.3

TLS (Transport Layer Security) est le protocole de chiffrement utilisé par HTTPS. La version TLS 1.3 apporte plusieurs améliorations :

  • Un chiffrement plus rapide et plus sécurisé en supprimant les anciens algorithmes vulnérables.
  • Un handshake plus court : Moins d’échanges entre le client et le serveur, ce qui accélère la connexion.
  • Une meilleure confidentialité : Les informations sensibles (comme l’identité du serveur) sont mieux protégées.

Comment fonctionne une connexion HTTPS avec TLS 1.3 ?

  1. Le client (navigateur) envoie une requête au serveur pour établir une connexion sécurisée.
  2. Le serveur répond avec son certificat SSL/TLS, qui contient sa clé publique.
  3. Le client vérifie le certificat pour s’assurer de l’identité du serveur.
  4. Un échange de clés sécurisé a lieu pour établir un chiffrement de session.
  5. Les données sont ensuite échangées de manière chiffrée entre le client et le serveur.

Les certificats SSL/TLS

Un site HTTPS possède un certificat SSL/TLS délivré par une autorité de certification (CA). Ce certificat garantit que le site est authentique.

Il existe plusieurs types de certificats :

  • DV (Domain Validation) : Vérifie uniquement que le propriétaire possède le domaine.
  • OV (Organization Validation) : Vérifie l’identité de l’organisation.
  • EV (Extended Validation) : Niveau de validation le plus strict, affichant un indicateur de sécurité renforcé dans le navigateur.

Exemple pratique

Il est possible de configurer un serveur Web pour utiliser HTTPS avec TLS 1.3 en générant un certificat SSL avec Let's Encrypt et en configurant Apache ou Nginx.

1. Installer Certbot pour obtenir un certificat SSL

Certbot est un outil permettant d’obtenir un certificat SSL gratuitement avec Let's Encrypt.

sudo apt update
sudo apt install certbot python3-certbot-apache

2. Générer un certificat SSL

sudo certbot --apache -d monsite.com -d www.monsite.com

Certbot va :

  • Vérifier que le domaine appartient bien à l’utilisateur.
  • Générer un certificat SSL valide.
  • Configurer automatiquement Apache pour utiliser HTTPS.

3. Vérifier que TLS 1.3 est activé

Dans la configuration d’Apache (/etc/apache2/mods-available/ssl.conf), s’assurer que TLS 1.3 est bien activé :

SSLProtocol -all +TLSv1.3

4. Redémarrer Apache

sudo systemctl restart apache2

Le site est maintenant accessible en HTTPS avec TLS 1.3.


Test de mémorisation/compréhension


Quel est l'objectif principal de HTTPS ?


Quelle est la principale différence entre HTTP et HTTPS ?


Quel protocole est utilisé par HTTPS pour sécuriser les échanges ?


Quels sont les avantages de TLS 1.3 ?


Que contient un certificat SSL/TLS ?


Quelle autorité délivre les certificats SSL/TLS ?


Quel outil permet d'obtenir un certificat SSL gratuitement ?


Quel fichier de configuration permet d'activer TLS 1.3 sur Apache ?


Quelle commande permet de redémarrer Apache après modification de la configuration SSL ?


Pourquoi utiliser un certificat EV (Extended Validation) ?



TP pour réfléchir et résoudre des problèmes

Objectif du TP

Configurer un serveur Web local avec HTTPS et TLS 1.3 en utilisant Apache et Certbot, puis tester la connexion sécurisée.


Étape 1 : Installer Apache et Certbot

Un serveur Web Apache est nécessaire pour héberger un site, et Certbot permet d’obtenir un certificat SSL/TLS gratuitement.

Instructions

  1. Mettre à jour la liste des paquets pour s’assurer d’avoir les dernières versions disponibles :
    sudo apt update && sudo apt upgrade -y
  2. Installer Apache si ce n’est pas déjà fait :
    sudo apt install apache2 -y
  3. Vérifier qu’Apache fonctionne en ouvrant un navigateur et en accédant à http://localhost ou http://<adresse-IP-du-serveur>.
  4. Installer Certbot et son module pour Apache :
    sudo apt install certbot python3-certbot-apache -y
  5. Vérifier que Certbot est bien installé en exécutant :
    certbot --version

Vérifier si :

  • Apache est installé et accessible via http://localhost.
  • Certbot est installé et prêt à être utilisé.

Étape 2 : Obtenir un certificat SSL/TLS avec Let's Encrypt

Let's Encrypt fournit des certificats SSL gratuits et automatisés.

Instructions

  1. S’assurer que le domaine pointe vers l’adresse IP du serveur (si le test est réalisé sur un serveur distant).
  2. Exécuter la commande suivante en remplaçant monsite.com par le nom de domaine :
    sudo certbot --apache -d monsite.com -d www.monsite.com
  3. Suivre les instructions affichées :
    • Accepter les conditions d’utilisation.
    • Choisir si les redirections HTTP vers HTTPS doivent être activées.
  4. Attendre la confirmation de Certbot indiquant que le certificat a été généré et installé avec succès.
  5. Vérifier que le certificat est bien installé en accédant à https://monsite.com depuis un navigateur.

Vérifier si :

  • Le site est maintenant accessible en HTTPS.
  • Le certificat SSL est valide et reconnu par le navigateur.

Étape 3 : Configurer Apache pour utiliser HTTPS et TLS 1.3

Par défaut, Certbot configure automatiquement Apache pour utiliser HTTPS, mais il est nécessaire de s’assurer que TLS 1.3 est bien activé.

Instructions

  1. Ouvrir le fichier de configuration SSL d’Apache :
    sudo nano /etc/apache2/mods-available/ssl.conf
  2. Rechercher la ligne contenant SSLProtocol et la modifier pour activer uniquement TLS 1.3 :
    SSLProtocol -all +TLSv1.3
  3. Enregistrer et fermer le fichier (CTRL + X, puis Y et Entrée).
  4. Redémarrer Apache pour appliquer les modifications :
    sudo systemctl restart apache2
  5. Vérifier que TLS 1.3 est bien utilisé en exécutant la commande suivante :
    openssl s_client -connect monsite.com:443 -tls1_3
    • Si la connexion est établie avec TLS 1.3, la sortie affichera Protocol: TLSv1.3.

Vérifier si :

  • Apache est configuré pour forcer l’utilisation de TLS 1.3.
  • La connexion est sécurisée et utilise la dernière version du protocole TLS.

Étape 4 : Tester la connexion sécurisée

Une fois la configuration terminée, il est important de vérifier que le site fonctionne correctement en HTTPS et que TLS 1.3 est bien actif.

Instructions

  1. Ouvrir un navigateur et accéder au site en tapant https://monsite.com.
  2. Vérifier que le cadenas sécurisé apparaît dans la barre d’adresse.
  3. Cliquer sur le cadenas et afficher les informations du certificat.
  4. Vérifier que TLS 1.3 est bien utilisé en consultant les détails de la connexion.
  5. Tester la redirection automatique de HTTP vers HTTPS en accédant à http://monsite.com et en s’assurant que l’URL est bien redirigée vers https://monsite.com.

Vérifier si :

  • Le site est accessible uniquement en HTTPS.
  • Le certificat SSL est valide et reconnu.
  • TLS 1.3 est bien utilisé pour sécuriser les échanges.